/*  
Copyright Microsoft Corporation

Licensed under the Apache License, Version 2.0 (the "License"); you may not
use this file except in compliance with the License. You may obtain a copy of
the License at 

http://www.apache.org/licenses/LICENSE-2.0 

THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED 
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, 
MERCHANTABLITY OR NON-INFRINGEMENT. 

See the Apache 2 License for the specific language governing permissions and
limitations under the License. */

using System;
using System.Collections;
using System.Collections.Generic;

namespace MileageStats.Web.Helpers.Mustache
{
    internal class DisposableEnumerator<T> : IEnumerator<T>
    {
        private readonly IEnumerator<T> _source;
        private readonly Action _whenDisposing;

        public DisposableEnumerator(IEnumerator<T> source, Action whenDisposing)
        {
            _source = source;
            _whenDisposing = whenDisposing;
        }

        public T Current
        {
            get { return _source.Current; }
        }

        public void Dispose()
        {
            _whenDisposing();
            _source.Dispose();
        }

        object IEnumerator.Current
        {
            get { return _source.Current; }
        }

        public bool MoveNext()
        {
            return _source.MoveNext();
        }

        public void Reset()
        {
            _source.Reset();
        }
    }
}